import re

# 定义美元对人民币的汇率
USD_VS_RMB = 6.77


def convert_currency(amount, rate):
    """
    汇率兑换函数
    参数 amount 表示输入的金额
    参数 rate 表示使用的汇率
    """
    return amount * rate


def validate_input(currency_str_value):
    """
    验证输入的货币字符串格式是否正确
    返回货币单位和去除单位后的金额字符串
    """
    # 正则表达式匹配格式为数字+可选的小数点+数字+3个字母的货币单位
    pattern = re.compile(r'^\d+(\.\d+)?\D{3}$')
    if pattern.match(currency_str_value):
        # 分割货币金额和单位
        amount_str = currency_str_value[:-3]
        unit = currency_str_value[-3:]
        return amount_str, unit
    else:
        return None, None


def main():
    while True:
        # 获取用户输入
        currency_str_value = input('请输入带单位(CNY/USD)的货币金额： ')

        # 验证用户输入
        amount_str, unit = validate_input(currency_str_value)

        if amount_str is not None and unit is not None:
            try:
                # 转换金额为浮点数
                amount = float(amount_str)

                # 根据货币单位计算汇率
                if unit == 'CNY':
                    exchange_rate = 1 / USD_VS_RMB
                elif unit == 'USD':
                    exchange_rate = USD_VS_RMB
                else:
                    print("输入的货币单位不正确，请输入CNY或USD。")
                    continue  # 继续下一次循环

                # 调用转换函数并打印结果
                result = convert_currency(amount, exchange_rate)
                print(f'转换后的金额为：{result:.2f}')

            except ValueError:
                # 如果转换金额出现错误（如输入了非数字字符）
                print("输入的金额不是有效的数字，请重新输入。")
        else:
            # 如果输入的货币格式不正确
            print("输入的货币格式不正确，请输入类似'100CNY'或'100USD'的格式。")

        # 询问用户是否继续
        continue_choice = input("是否继续转换货币？(y/n): ").strip().lower()
        if continue_choice != 'y':
            break

    print("程序已退出。")


if __name__ == "__main__":
    main()